﻿package com.bws.magiccube.log;

import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Properties;

public class LogHelper {

    /**
     * <p>Discription:[機能・メソッド記述]</p>
     * @param args
     * @author:
     * @update:
     */
    //異常設定ファイルのパス
    public static String LOGMSG_CONF_PATH = "./conf";
    //messageファイル
    public static String LOGMSG_CONFIG_FILE   = LOGMSG_CONF_PATH + "/logparser.properties";
    
    private static boolean isLoaded = false;
    /**異常設定ファイル*/
    private static Properties prop_config = new Properties();
    /**エラーコードと内容の照合表*/
    private static Properties prop = new Properties();
    private static LogWriter log = LogHelper.getLogWriter(LogHelper.class); 

    
    public static void load() {
          if (isLoaded) {
            return;
          }

          InitProp(prop_config, prop);
          
          isLoaded = true;
        }

        /**
         * prop_configとpropの初期化
         */
        public static void InitProp(Properties prop_config, Properties prop) {
            java.util.Properties pps=new java.util.Properties();
            InputStream in=ClassLoader.getSystemResourceAsStream(LOGMSG_CONFIG_FILE);
            try {
                pps.load(in);
                prop.putAll(pps);
           }
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                log.Error("ログ設定ファイルの読込エラー！");
            } finally {
                if (in != null)
                    try {
                        in.close();
                    }
                    catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            }
        }   
        

    public static String getContent(String code) {
        if (!isLoaded) load();
        String message = null;
        if(code == null){
          message = "エラーコードリターン値がNULL!";
        }else{
          message = (String) prop.get(code);
        }
        return message==null?"エラーコードに対応するエラー内容がありません！":message;
      }
      
      /**
       * コードにより内容を取得
       * @param code エラーコード
       * @param args パラメータ
       * @return
       */
      public static String getContent(String code, String args[]) {
          
          String message = getContent(code);
          if(message.indexOf("{") == -1)
              return message;
          MessageFormat format = new MessageFormat(message);
        return (format.format(args));
      }
      
      public static LogWriter getLogWriter(Class classIns){
          if (!isLoaded) load(); 
          return new LogWriter(classIns);
      }

}
